<?php
/**
 * KindEditor PHP
 *
 * 本PHP程序是演示程序，建议不要直接在实际项目中使用。
 * 如果您确定直接使用本程序，使用之前请仔细确认相关安全设置。
 *
 */
$data=array(
    'image'=>array('png','jpg','gif')
);
$type=$_GET['dir'];//文件类型
//array('error' => 0, 'url' => $file_url)成功时
//array('error' => 1, 'message' => $msg)失败时
if (empty($data[$type]))
{
    echo json_encode(
        array('error' => 1, 'message' => '文件类型错误')
    );
    exit;
}
$name=$_FILES['imgFile'];//当前文件
if (!is_uploaded_file($name['tmp_name']))//is_uploaded_file() 函数检查指定的文件是否是通过 HTTP POST 上传的。
    //如果文件是通过 HTTP POST 上传的，该函数返回 TRUE。
{
    echo json_encode(
        array('error' => 1, 'message' => '非法上传')
    );
    exit;
}

if ($name['error']!=0)
{
    echo json_encode(
        array('error' => 1, 'message' => '文件错误')
    );
    exit;
}
//extension//文件后缀名
$path=pathinfo($name['name']);//pathinfo(	必需。规定要检查的路径,可选。规定要返回的数组元素。) 函数以数组的形式返回关于文件路径的信息。
if (empty($path['extension']))//文件后缀名
{
    echo json_encode(
        array('error' => 1, 'message' => '非法文件类型')
    );
    exit;
}
strtolower($path['extension']);//strtolower(必需。规定要转换的字符串) 函数把字符串转换为小写。
$statu=false;
foreach ($data['image'] as $v)//判断$data数组里有没有这个后缀名
{
    if (strtolower($path['extension'])===$v)
    {
        $statu=true;
        break;
    }
}
if (! $statu)
{
    echo json_encode(
        array('error' => 1, 'message' => '非法文件类型')
    );
    exit;
}
$size=1024*1024*3;//设置上传资源的上限
if ($name['size']>$size)
{
    echo json_encode(
        array('error' => 1, 'message' => '文件过大')
    );
    exit;
}
$path_url=WEB_ROOT.'/upload/img';//服务器根路径
$web_url='/upload/img';//站点根路径
//echo microtime(true);microtime() 函数返回当前 Unix 时间戳的微秒数。
$file_name=time();
$file_name.='.'.strtolower($path['extension']);//时间戳拼接后缀名
$path_url.='/'.$file_name;
$bool=move_uploaded_file(//move_uploaded_file(必需。规定要移动的文件,必需。规定文件的新位置) 函数把上传的文件移动到新位置。成功该函数返回TRUE
    $name['tmp_name'],
    $path_url
);
if ($bool)
{
    $web_url.='/'.$file_name;
    echo json_encode(
        array('error' => 0, 'url' => $web_url)
    );
    exit;
}else{
    echo json_encode(
        array('error' => 1, 'message' => '上传失败')
    );
    exit;
}


//var_export(pathinfo($name['name']));
//var_export($_FILES);



/*$php_path = WEB_ROOT . '/upload';
$php_url =  '/upload';

//文件保存目录路径
$save_path = $php_path . '/';
//文件保存目录URL
$save_url = $php_url . '/';
//定义允许上传的文件扩展名
$ext_arr = array(
	'image' => array('gif', 'jpg', 'jpeg', 'png', 'bmp'),
	'flash' => array('swf', 'flv'),
	'media' => array('swf', 'flv', 'mp3', 'wav', 'wma', 'wmv', 'mid', 'avi', 'mpg', 'asf', 'rm', 'rmvb'),
	'file' => array('doc', 'docx', 'xls', 'xlsx', 'ppt', 'txt', 'zip', 'rar', 'gz', 'bz2'),
);
//最大文件大小
$max_size = 1000000;

$save_path = realpath($save_path) . '/';

//PHP上传失败
if (!empty($_FILES['imgFile']['error'])) {
	switch($_FILES['imgFile']['error']){
		case '1':
			$error = '超过php.ini允许的大小。';
			break;
		case '2':
			$error = '超过表单允许的大小。';
			break;
		case '3':
			$error = '图片只有部分被上传。';
			break;
		case '4':
			$error = '请选择图片。';
			break;
		case '6':
			$error = '找不到临时目录。';
			break;
		case '7':
			$error = '写文件到硬盘出错。';
			break;
		case '8':
			$error = 'File upload stopped by extension。';
			break;
		case '999':
		default:
			$error = '未知错误。';
	}
	alert($error);
}

//有上传文件时
if (empty($_FILES) === false) {
	//原文件名
	$file_name = $_FILES['imgFile']['name'];
	//服务器上临时文件名
	$tmp_name = $_FILES['imgFile']['tmp_name'];
	//文件大小
	$file_size = $_FILES['imgFile']['size'];
	//检查文件名
	if (!$file_name) {
		alert("请选择文件。");
	}
	//检查目录
	if (@is_dir($save_path) === false) {
		alert("上传目录不存在。");
	}
	//检查目录写权限
	if (@is_writable($save_path) === false) {
		alert("上传目录没有写权限。");
	}
	//检查是否已上传
	if (@is_uploaded_file($tmp_name) === false) {
		alert("上传失败。");
	}
	//检查文件大小
	if ($file_size > $max_size) {
		alert("上传文件大小超过限制。");
	}
	//检查目录名
	$dir_name = empty($_GET['dir']) ? 'image' : trim($_GET['dir']);
	if (empty($ext_arr[$dir_name])) {
		alert("目录名不正确。");
	}
	//获得文件扩展名
	$temp_arr = explode(".", $file_name);
	$file_ext = array_pop($temp_arr);
	$file_ext = trim($file_ext);
	$file_ext = strtolower($file_ext);
	//检查扩展名
	if (in_array($file_ext, $ext_arr[$dir_name]) === false) {
		alert("上传文件扩展名是不允许的扩展名。\n只允许" . implode(",", $ext_arr[$dir_name]) . "格式。");
	}
	//创建文件夹
	if ($dir_name !== '') {
		$save_path .= $dir_name . "/";
		$save_url .= $dir_name . "/";
		if (!file_exists($save_path)) {
			mkdir($save_path);
		}
	}
	$ymd = date("Ymd");
	$save_path .= $ymd . "/";
	$save_url .= $ymd . "/";
	if (!file_exists($save_path)) {
		mkdir($save_path);
	}
	//新文件名
	$new_file_name = date("YmdHis") . '_' . rand(10000, 99999) . '.' . $file_ext;
	//移动文件
	$file_path = $save_path . $new_file_name;
	if (move_uploaded_file($tmp_name, $file_path) === false) {
		alert("上传文件失败。");
	}
	@chmod($file_path, 0644);
	$file_url = $save_url . $new_file_name;

	header('Content-type: text/html; charset=UTF-8');
	echo json_encode(array('error' => 0, 'url' => $file_url));
	///$json = new Services_JSON();
	//echo $json->encode(array('error' => 0, 'url' => $file_url));
	exit;
}

function alert($msg) {
	header('Content-type: text/html; charset=UTF-8');
	echo json_encode(array('error' => 1, 'message' => $msg));
	//$json = new Services_JSON();
	//echo $json->encode(array('error' => 1, 'message' => $msg));
	exit;
}*/
